1 /* 2 * Copyright (c) 2011-2012 - Mauro Carvalho Chehab 3 * Copyright (c) 2012-2014 - Andre Roth <neolynx@gmail.com> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU Lesser General Public License as published by 7 * the Free Software Foundation version 2.1 of the License. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 * Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 18 */ 19 20 /** 21 * @file descriptors.h 22 * @ingroup dvb_table 23 * @brief Provides a way to handle MPEG-TS descriptors found on Digital TV 24 * streams. 25 * @copyright GNU Lesser General Public License version 2.1 (LGPLv2.1) 26 * @author Mauro Carvalho Chehab 27 * @author Andre Roth 28 * 29 * @par Relevant specs 30 * The descriptors herein are defined on the following specs: 31 * - ISO/IEC 13818-1 32 * - ETSI EN 300 468 V1.11.1 (2010-04) 33 * - SCTE 35 2004 34 * - http://www.etherguidesystems.com/Help/SDOs/ATSC/Semantics/Descriptors/Default.aspx 35 * - http://www.coolstf.com/tsreader/descriptors.html 36 * - ABNT NBR 15603-1 2007 37 * - ATSC A/65:2009 spec 38 * 39 * @par Bug Report 40 * Please submit bug reports and patches to linux-media@vger.kernel.org 41 */ 42 43 module libdvbv5_d.descriptors; 44 45 import core.sys.posix.unistd; 46 47 import libdvbv5_d.dvb_fe: dvb_v5_fe_parms; 48 49 extern (C): 50 51 /** 52 * @brief Maximum size of a table session to be parsed 53 * @ingroup dvb_table 54 */ 55 enum DVB_MAX_PAYLOAD_PACKET_SIZE = 4096; 56 57 /** 58 * @brief number of bytes for the descriptor's CRC check 59 * @ingroup dvb_table 60 */ 61 enum DVB_CRC_SIZE = 4; 62 63 //struct dvb_v5_fe_parms; 64 65 /** 66 * @brief Function prototype for a function that initializes the 67 * descriptors parsing on a table 68 * @ingroup dvb_table 69 * 70 * @param parms Struct dvb_v5_fe_parms pointer 71 * @param buf Buffer with data to be parsed 72 * @param buflen Size of the buffer to be parsed 73 * @param table pointer to a place where the allocated memory with the 74 * table structure will be stored. 75 */ 76 alias dvb_table_init_func = void function ( 77 dvb_v5_fe_parms* parms, 78 const(ubyte)* buf, 79 ssize_t buflen, 80 void** table); 81 82 /** 83 * @brief Table with all possible descriptors 84 * @ingroup dvb_table 85 */ 86 extern __gshared const(dvb_table_init_func)[256] dvb_table_initializers; 87 88 /* Deprecated */ 89 90 /* _DOXYGEN */ 91 92 /** 93 * @struct dvb_desc 94 * @brief Linked list containing the several descriptors found on a 95 * MPEG-TS table 96 * @ingroup dvb_table 97 * 98 * @param type Descriptor type 99 * @param length Length of the descriptor 100 * @param next pointer to the dvb_desc descriptor 101 * @param data Descriptor data 102 */ 103 struct dvb_desc 104 { 105 align (1): 106 107 ubyte type; 108 ubyte length; 109 dvb_desc* next; 110 111 ubyte[] data; 112 } 113 114 /* _DOXYGEN */ 115 116 /** 117 * @brief Converts from BCD to CPU integer internal representation 118 * @ingroup dvb_table 119 * 120 * @param bcd value in BCD encoding 121 */ 122 uint dvb_bcd (uint bcd); 123 124 /** 125 * @brief dumps data into the logs in hexadecimal format 126 * @ingroup dvb_table 127 * 128 * @param parms Struct dvb_v5_fe_parms pointer 129 * @param prefix String to be printed before the dvb_hexdump 130 * @param buf Buffer to hex dump 131 * @param len Number of bytes to show 132 */ 133 void dvb_hexdump ( 134 dvb_v5_fe_parms* parms, 135 const(char)* prefix, 136 const(ubyte)* buf, 137 int len); 138 139 /** 140 * @brief parse MPEG-TS descriptors 141 * @ingroup dvb_table 142 * 143 * @param parms Struct dvb_v5_fe_parms pointer 144 * @param buf Buffer with data to be parsed 145 * @param buflen Size of the buffer to be parsed 146 * @param head_desc pointer to the place to store the parsed data 147 * 148 * This function takes a buf as argument and parses it to find the 149 * MPEG-TS descriptors inside it, creating a linked list. 150 * 151 * On success, head_desc will be allocated and filled with a linked list 152 * with the descriptors found inside the buffer. 153 * 154 * This function is used by the several MPEG-TS table handlers to parse 155 * the entire table that got read by dvb_read_sessions and other similar 156 * functions. 157 * 158 * @return Returns 0 on success, a negative value otherwise. 159 */ 160 int dvb_desc_parse ( 161 dvb_v5_fe_parms* parms, 162 const(ubyte)* buf, 163 ushort buflen, 164 dvb_desc** head_desc); 165 166 /** 167 * @brief frees a dvb_desc linked list 168 * @ingroup dvb_table 169 * 170 * @param list struct dvb_desc pointer. 171 */ 172 void dvb_desc_free (dvb_desc** list); 173 174 /** 175 * @brief prints the contents of a struct dvb_desc linked list 176 * @ingroup dvb_table 177 * 178 * @param parms Struct dvb_v5_fe_parms pointer 179 * @param desc struct dvb_desc pointer. 180 */ 181 void dvb_desc_print (dvb_v5_fe_parms* parms, dvb_desc* desc); 182 183 /** 184 * @brief Function prototype for the descriptors parsing init code 185 * @ingroup dvb_table 186 * 187 * @param parms Struct dvb_v5_fe_parms pointer 188 * @param buf buffer with the content of the descriptor 189 * @param desc struct dvb_desc pointer 190 */ 191 alias dvb_desc_init_func = int function ( 192 dvb_v5_fe_parms* parms, 193 const(ubyte)* buf, 194 dvb_desc* desc); 195 196 /** 197 * @brief Function prototype for the descriptors parsing print code 198 * @ingroup dvb_table 199 * 200 * @param parms Struct dvb_v5_fe_parms pointer 201 * @param desc struct dvb_desc pointer 202 */ 203 alias dvb_desc_print_func = void function ( 204 dvb_v5_fe_parms* parms, 205 const(dvb_desc)* desc); 206 207 /** 208 * @brief Function prototype for the descriptors memory free code 209 * @ingroup dvb_table 210 * 211 * @param desc pointer to struct dvb_desc pointer to be freed 212 */ 213 alias dvb_desc_free_func = void function (dvb_desc* desc); 214 215 /** 216 * @struct dvb_descriptor 217 * @brief Contains the parser information for the MPEG-TS parser code 218 * @ingroup dvb_table 219 * 220 * @param name String containing the name of the descriptor 221 * @param init Pointer to a function to initialize the descriptor 222 * parser. This function fills the descriptor-specific 223 * internal structures 224 * @param print Prints the content of the descriptor 225 * @param free Frees all memory blocks allocated by the init function 226 * @param size Descriptor's size, in bytes. 227 */ 228 struct dvb_descriptor 229 { 230 const(char)* name; 231 dvb_desc_init_func init; 232 dvb_desc_print_func print; 233 dvb_desc_free_func free; 234 ssize_t size; 235 } 236 237 /** 238 * @brief Contains the parsers for the several descriptors 239 * @ingroup dvb_table 240 */ 241 extern __gshared const(dvb_descriptor)[] dvb_descriptors; 242 243 /** 244 * @enum descriptors 245 * @brief List containing all descriptors used by Digital TV MPEG-TS 246 * @ingroup dvb_table 247 * 248 * @var video_stream_descriptor 249 * @brief video_stream descriptor - ISO/IEC 13818-1 250 * @var audio_stream_descriptor 251 * @brief audio_stream descriptor - ISO/IEC 13818-1 252 * @var hierarchy_descriptor 253 * @brief hierarchy descriptor - ISO/IEC 13818-1 254 * @var registration_descriptor 255 * @brief registration descriptor - ISO/IEC 13818-1 256 * @var ds_alignment_descriptor 257 * @brief ds_alignment descriptor - ISO/IEC 13818-1 258 * @var target_background_grid_descriptor 259 * @brief target_background_grid descriptor - ISO/IEC 13818-1 260 * @var video_window_descriptor 261 * @brief video_window descriptor - ISO/IEC 13818-1 262 * @var conditional_access_descriptor 263 * @brief conditional_access descriptor - ISO/IEC 13818-1 264 * @var iso639_language_descriptor 265 * @brief iso639_language descriptor - ISO/IEC 13818-1 266 * @var system_clock_descriptor 267 * @brief system_clock descriptor - ISO/IEC 13818-1 268 * @var multiplex_buffer_utilization_descriptor 269 * @brief multiplex_buffer_utilization descriptor - ISO/IEC 13818-1 270 * @var copyright_descriptor 271 * @brief copyright descriptor - ISO/IEC 13818-1 272 * @var maximum_bitrate_descriptor 273 * @brief maximum_bitrate descriptor - ISO/IEC 13818-1 274 * @var private_data_indicator_descriptor 275 * @brief private_data_indicator descriptor - ISO/IEC 13818-1 276 * @var smoothing_buffer_descriptor 277 * @brief smoothing_buffer descriptor - ISO/IEC 13818-1 278 * @var std_descriptor 279 * @brief std descriptor - ISO/IEC 13818-1 280 * @var ibp_descriptor 281 * @brief ibp descriptor - ISO/IEC 13818-1 282 * @var mpeg4_video_descriptor 283 * @brief mpeg4_video descriptor - ISO/IEC 13818-1 284 * @var mpeg4_audio_descriptor 285 * @brief mpeg4_audio descriptor - ISO/IEC 13818-1 286 * @var iod_descriptor 287 * @brief iod descriptor - ISO/IEC 13818-1 288 * @var sl_descriptor 289 * @brief sl descriptor - ISO/IEC 13818-1 290 * @var fmc_descriptor 291 * @brief fmc descriptor - ISO/IEC 13818-1 292 * @var external_es_id_descriptor 293 * @brief external_es_id descriptor - ISO/IEC 13818-1 294 * @var muxcode_descriptor 295 * @brief muxcode descriptor - ISO/IEC 13818-1 296 * @var fmxbuffersize_descriptor 297 * @brief fmxbuffersize descriptor - ISO/IEC 13818-1 298 * @var multiplexbuffer_descriptor 299 * @brief multiplexbuffer descriptor - ISO/IEC 13818-1 300 * @var content_labeling_descriptor 301 * @brief content_labeling descriptor - ISO/IEC 13818-1 302 * @var metadata_pointer_descriptor 303 * @brief metadata_pointer descriptor - ISO/IEC 13818-1 304 * @var metadata_descriptor 305 * @brief metadata descriptor - ISO/IEC 13818-1 306 * @var metadata_std_descriptor 307 * @brief metadata_std descriptor - ISO/IEC 13818-1 308 * @var AVC_video_descriptor 309 * @brief AVC_video descriptor - ISO/IEC 13818-1 310 * @var ipmp_descriptor 311 * @brief ipmp descriptor - ISO/IEC 13818-1 312 * @var AVC_timing_and_HRD_descriptor 313 * @brief AVC_timing_and_HRD descriptor - ISO/IEC 13818-1 314 * @var mpeg2_aac_audio_descriptor 315 * @brief mpeg2_aac_audio descriptor - ISO/IEC 13818-1 316 * @var flexmux_timing_descriptor 317 * @brief flexmux_timing descriptor - ISO/IEC 13818-1 318 * @var network_name_descriptor 319 * @brief network_name descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 320 * @var service_list_descriptor 321 * @brief service_list descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 322 * @var stuffing_descriptor 323 * @brief stuffing descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 324 * @var satellite_delivery_system_descriptor 325 * @brief satellite_delivery_system descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 326 * @var cable_delivery_system_descriptor 327 * @brief cable_delivery_system descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 328 * @var VBI_data_descriptor 329 * @brief VBI_data descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 330 * @var VBI_teletext_descriptor 331 * @brief VBI_teletext descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 332 * @var bouquet_name_descriptor 333 * @brief bouquet_name descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 334 * @var service_descriptor 335 * @brief service descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 336 * @var country_availability_descriptor 337 * @brief country_availability descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 338 * @var linkage_descriptor 339 * @brief linkage descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 340 * @var NVOD_reference_descriptor 341 * @brief NVOD_reference descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 342 * @var time_shifted_service_descriptor 343 * @brief time_shifted_service descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 344 * @var short_event_descriptor 345 * @brief short_event descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 346 * @var extended_event_descriptor 347 * @brief extended_event descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 348 * @var time_shifted_event_descriptor 349 * @brief time_shifted_event descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 350 * @var component_descriptor 351 * @brief component descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 352 * @var mosaic_descriptor 353 * @brief mosaic descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 354 * @var stream_identifier_descriptor 355 * @brief stream_identifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 356 * @var CA_identifier_descriptor 357 * @brief CA_identifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 358 * @var content_descriptor 359 * @brief content descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 360 * @var parental_rating_descriptor 361 * @brief parental_rating descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 362 * @var teletext_descriptor 363 * @brief teletext descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 364 * @var telephone_descriptor 365 * @brief telephone descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 366 * @var local_time_offset_descriptor 367 * @brief local_time_offset descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 368 * @var subtitling_descriptor 369 * @brief subtitling descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 370 * @var terrestrial_delivery_system_descriptor 371 * @brief terrestrial_delivery_system descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 372 * @var multilingual_network_name_descriptor 373 * @brief multilingual_network_name descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 374 * @var multilingual_bouquet_name_descriptor 375 * @brief multilingual_bouquet_name descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 376 * @var multilingual_service_name_descriptor 377 * @brief multilingual_service_name descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 378 * @var multilingual_component_descriptor 379 * @brief multilingual_component descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 380 * @var private_data_specifier_descriptor 381 * @brief private_data_specifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 382 * @var service_move_descriptor 383 * @brief service_move descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 384 * @var short_smoothing_buffer_descriptor 385 * @brief short_smoothing_buffer descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 386 * @var frequency_list_descriptor 387 * @brief frequency_list descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 388 * @var partial_transport_stream_descriptor 389 * @brief partial_transport_stream descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 390 * @var data_broadcast_descriptor 391 * @brief data_broadcast descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 392 * @var scrambling_descriptor 393 * @brief scrambling descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 394 * @var data_broadcast_id_descriptor 395 * @brief data_broadcast_id descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 396 * @var transport_stream_descriptor 397 * @brief transport_stream descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 398 * @var DSNG_descriptor 399 * @brief DSNG descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 400 * @var PDC_descriptor 401 * @brief PDC descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 402 * @var AC_3_descriptor 403 * @brief AC_3 descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 404 * @var ancillary_data_descriptor 405 * @brief ancillary_data descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 406 * @var cell_list_descriptor 407 * @brief cell_list descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 408 * @var cell_frequency_link_descriptor 409 * @brief cell_frequency_link descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 410 * @var announcement_support_descriptor 411 * @brief announcement_support descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 412 * @var application_signalling_descriptor 413 * @brief application_signalling descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 414 * @var adaptation_field_data_descriptor 415 * @brief adaptation_field_data descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 416 * @var service_identifier_descriptor 417 * @brief service_identifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 418 * @var service_availability_descriptor 419 * @brief service_availability descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 420 * @var default_authority_descriptor 421 * @brief default_authority descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 422 * @var related_content_descriptor 423 * @brief related_content descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 424 * @var TVA_id_descriptor 425 * @brief TVA_id descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 426 * @var content_identifier_descriptor 427 * @brief content_identifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 428 * @var time_slice_fec_identifier_descriptor 429 * @brief time_slice_fec_identifier descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 430 * @var ECM_repetition_rate_descriptor 431 * @brief ECM_repetition_rate descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 432 * @var S2_satellite_delivery_system_descriptor 433 * @brief S2_satellite_delivery_system descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 434 * @var enhanced_AC_3_descriptor 435 * @brief enhanced_AC_3 descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 436 * @var DTS_descriptor 437 * @brief DTS descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 438 * @var AAC_descriptor 439 * @brief AAC descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 440 * @var XAIT_location_descriptor 441 * @brief XAIT_location descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 442 * @var FTA_content_management_descriptor 443 * @brief FTA_content_management descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 444 * @var extension_descriptor 445 * @brief extension descriptor - ETSI EN 300 468 V1.11.1 (2010-04) 446 * @var CUE_identifier_descriptor 447 * @brief CUE_identifier descriptor - SCTE 35 2004 448 * @var extended_channel_name 449 * @brief extended_channel_name descriptor - SCTE 35 2004 450 * @var service_location 451 * @brief service_location descriptor - SCTE 35 2004 452 * @var component_name_descriptor 453 * @brief component_name descriptor - SCTE 35 2004 454 * @see http://www.etherguidesystems.com/Help/SDOs/ATSC/Semantics/Descriptors/Default.aspx 455 * @var logical_channel_number_descriptor 456 * @brief logical_channel_number descriptor - SCTE 35 2004 457 * @see http://www.coolstf.com/tsreader/descriptors.html 458 * 459 * @var carousel_id_descriptor 460 * @brief carousel_id descriptor - ABNT NBR 15603-1 2007 461 * @var association_tag_descriptor 462 * @brief association_tag descriptor - ABNT NBR 15603-1 2007 463 * @var deferred_association_tags_descriptor 464 * @brief deferred_association_tags descriptor - ABNT NBR 15603-1 2007 465 466 * @var hierarchical_transmission_descriptor 467 * @brief hierarchical_transmission descriptor - ABNT NBR 15603-1 2007 468 * @var digital_copy_control_descriptor 469 * @brief digital_copy_control descriptor - ABNT NBR 15603-1 2007 470 * @var network_identifier_descriptor 471 * @brief network_identifier descriptor - ABNT NBR 15603-1 2007 472 * @var partial_transport_stream_time_descriptor 473 * @brief partial_transport_stream_time descriptor - ABNT NBR 15603-1 2007 474 * @var audio_component_descriptor 475 * @brief audio_component descriptor - ABNT NBR 15603-1 2007 476 * @var hyperlink_descriptor 477 * @brief hyperlink descriptor - ABNT NBR 15603-1 2007 478 * @var target_area_descriptor 479 * @brief target_area descriptor - ABNT NBR 15603-1 2007 480 * @var data_contents_descriptor 481 * @brief data_contents descriptor - ABNT NBR 15603-1 2007 482 * @var video_decode_control_descriptor 483 * @brief video_decode_control descriptor - ABNT NBR 15603-1 2007 484 * @var download_content_descriptor 485 * @brief download_content descriptor - ABNT NBR 15603-1 2007 486 * @var CA_EMM_TS_descriptor 487 * @brief CA_EMM_TS descriptor - ABNT NBR 15603-1 2007 488 * @var CA_contract_information_descriptor 489 * @brief CA_contract_information descriptor - ABNT NBR 15603-1 2007 490 * @var CA_service_descriptor 491 * @brief CA_service descriptor - ABNT NBR 15603-1 2007 492 * @var TS_Information_descriptior 493 * @brief transport_stream_information descriptor - ABNT NBR 15603-1 2007 494 * @var extended_broadcaster_descriptor 495 * @brief extended_broadcaster descriptor - ABNT NBR 15603-1 2007 496 * @var logo_transmission_descriptor 497 * @brief logo_transmission descriptor - ABNT NBR 15603-1 2007 498 * @var basic_local_event_descriptor 499 * @brief basic_local_event descriptor - ABNT NBR 15603-1 2007 500 * @var reference_descriptor 501 * @brief reference descriptor - ABNT NBR 15603-1 2007 502 * @var node_relation_descriptor 503 * @brief node_relation descriptor - ABNT NBR 15603-1 2007 504 * @var short_node_information_descriptor 505 * @brief short_node_information descriptor - ABNT NBR 15603-1 2007 506 * @var STC_reference_descriptor 507 * @brief STC_reference descriptor - ABNT NBR 15603-1 2007 508 * @var series_descriptor 509 * @brief series descriptor - ABNT NBR 15603-1 2007 510 * @var event_group_descriptor 511 * @brief event_group descriptor - ABNT NBR 15603-1 2007 512 * @var SI_parameter_descriptor 513 * @brief SI_parameter descriptor - ABNT NBR 15603-1 2007 514 * @var broadcaster_Name_Descriptor 515 * @brief broadcaster_Name descriptor - ABNT NBR 15603-1 2007 516 * @var component_group_descriptor 517 * @brief component_group descriptor - ABNT NBR 15603-1 2007 518 * @var SI_prime_TS_descriptor 519 * @brief SI_prime_transport_stream descriptor - ABNT NBR 15603-1 2007 520 * @var board_information_descriptor 521 * @brief board_information descriptor - ABNT NBR 15603-1 2007 522 * @var LDT_linkage_descriptor 523 * @brief LDT_linkage descriptor - ABNT NBR 15603-1 2007 524 * @var connected_transmission_descriptor 525 * @brief connected_transmission descriptor - ABNT NBR 15603-1 2007 526 * @var content_availability_descriptor 527 * @brief content_availability descriptor - ABNT NBR 15603-1 2007 528 * @var service_group_descriptor 529 * @brief service_group descriptor - ABNT NBR 15603-1 2007 530 * @var carousel_compatible_composite_descriptor 531 * @brief carousel_compatible_composite descriptor - ABNT NBR 15603-1 2007 532 * @var conditional_playback_descriptor 533 * @brief conditional_playback descriptor - ABNT NBR 15603-1 2007 534 * @var ISDBT_delivery_system_descriptor 535 * @brief ISDBT terrestrial_delivery_system descriptor - ABNT NBR 15603-1 2007 536 * @var partial_reception_descriptor 537 * @brief partial_reception descriptor - ABNT NBR 15603-1 2007 538 * @var emergency_information_descriptor 539 * @brief emergency_information descriptor - ABNT NBR 15603-1 2007 540 * @var data_component_descriptor 541 * @brief data_component descriptor - ABNT NBR 15603-1 2007 542 * @var system_management_descriptor 543 * @brief system_management descriptor - ABNT NBR 15603-1 2007 544 * 545 * @var atsc_stuffing_descriptor 546 * @brief atsc_stuffing descriptor - ATSC A/65:2009 547 * @var atsc_ac3_audio_descriptor 548 * @brief atsc_ac3_audio descriptor - ATSC A/65:2009 549 * @var atsc_caption_service_descriptor 550 * @brief atsc_caption_service descriptor - ATSC A/65:2009 551 * @var atsc_content_advisory_descriptor 552 * @brief atsc_content_advisory descriptor - ATSC A/65:2009 553 * @var atsc_extended_channel_descriptor 554 * @brief atsc_extended_channel descriptor - ATSC A/65:2009 555 * @var atsc_service_location_descriptor 556 * @brief atsc_service_location descriptor - ATSC A/65:2009 557 * @var atsc_time_shifted_service_descriptor 558 * @brief atsc_time_shifted_service descriptor - ATSC A/65:2009 559 * @var atsc_component_name_descriptor 560 * @brief atsc_component_name descriptor - ATSC A/65:2009 561 * @var atsc_DCC_departing_request_descriptor 562 * @brief atsc_DCC_departing_request descriptor - ATSC A/65:2009 563 * @var atsc_DCC_arriving_request_descriptor 564 * @brief atsc_DCC_arriving_request descriptor - ATSC A/65:2009 565 * @var atsc_redistribution_control_descriptor 566 * @brief atsc_redistribution_control descriptor - ATSC A/65:2009 567 * @var atsc_ATSC_private_information_descriptor 568 * @brief atsc_ATSC_private_information descriptor - ATSC A/65:2009 569 * @var atsc_genre_descriptor 570 * @brief atsc_genre descriptor - ATSC A/65:2009 571 */ 572 enum descriptors 573 { 574 /* ISO/IEC 13818-1 */ 575 video_stream_descriptor = 0x02, 576 audio_stream_descriptor = 0x03, 577 hierarchy_descriptor = 0x04, 578 registration_descriptor = 0x05, 579 ds_alignment_descriptor = 0x06, 580 target_background_grid_descriptor = 0x07, 581 video_window_descriptor = 0x08, 582 conditional_access_descriptor = 0x09, 583 iso639_language_descriptor = 0x0a, 584 system_clock_descriptor = 0x0b, 585 multiplex_buffer_utilization_descriptor = 0x0c, 586 copyright_descriptor = 0x0d, 587 maximum_bitrate_descriptor = 0x0e, 588 private_data_indicator_descriptor = 0x0f, 589 smoothing_buffer_descriptor = 0x10, 590 std_descriptor = 0x11, 591 ibp_descriptor = 0x12, 592 593 mpeg4_video_descriptor = 0x1b, 594 mpeg4_audio_descriptor = 0x1c, 595 iod_descriptor = 0x1d, 596 sl_descriptor = 0x1e, 597 fmc_descriptor = 0x1f, 598 external_es_id_descriptor = 0x20, 599 muxcode_descriptor = 0x21, 600 fmxbuffersize_descriptor = 0x22, 601 multiplexbuffer_descriptor = 0x23, 602 content_labeling_descriptor = 0x24, 603 metadata_pointer_descriptor = 0x25, 604 metadata_descriptor = 0x26, 605 metadata_std_descriptor = 0x27, 606 AVC_video_descriptor = 0x28, 607 ipmp_descriptor = 0x29, 608 AVC_timing_and_HRD_descriptor = 0x2a, 609 mpeg2_aac_audio_descriptor = 0x2b, 610 flexmux_timing_descriptor = 0x2c, 611 612 /* ETSI EN 300 468 V1.11.1 (2010-04) */ 613 614 network_name_descriptor = 0x40, 615 service_list_descriptor = 0x41, 616 stuffing_descriptor = 0x42, 617 satellite_delivery_system_descriptor = 0x43, 618 cable_delivery_system_descriptor = 0x44, 619 VBI_data_descriptor = 0x45, 620 VBI_teletext_descriptor = 0x46, 621 bouquet_name_descriptor = 0x47, 622 service_descriptor = 0x48, 623 country_availability_descriptor = 0x49, 624 linkage_descriptor = 0x4a, 625 NVOD_reference_descriptor = 0x4b, 626 time_shifted_service_descriptor = 0x4c, 627 short_event_descriptor = 0x4d, 628 extended_event_descriptor = 0x4e, 629 time_shifted_event_descriptor = 0x4f, 630 component_descriptor = 0x50, 631 mosaic_descriptor = 0x51, 632 stream_identifier_descriptor = 0x52, 633 CA_identifier_descriptor = 0x53, 634 content_descriptor = 0x54, 635 parental_rating_descriptor = 0x55, 636 teletext_descriptor = 0x56, 637 telephone_descriptor = 0x57, 638 local_time_offset_descriptor = 0x58, 639 subtitling_descriptor = 0x59, 640 terrestrial_delivery_system_descriptor = 0x5a, 641 multilingual_network_name_descriptor = 0x5b, 642 multilingual_bouquet_name_descriptor = 0x5c, 643 multilingual_service_name_descriptor = 0x5d, 644 multilingual_component_descriptor = 0x5e, 645 private_data_specifier_descriptor = 0x5f, 646 service_move_descriptor = 0x60, 647 short_smoothing_buffer_descriptor = 0x61, 648 frequency_list_descriptor = 0x62, 649 partial_transport_stream_descriptor = 0x63, 650 data_broadcast_descriptor = 0x64, 651 scrambling_descriptor = 0x65, 652 data_broadcast_id_descriptor = 0x66, 653 transport_stream_descriptor = 0x67, 654 DSNG_descriptor = 0x68, 655 PDC_descriptor = 0x69, 656 AC_3_descriptor = 0x6a, 657 ancillary_data_descriptor = 0x6b, 658 cell_list_descriptor = 0x6c, 659 cell_frequency_link_descriptor = 0x6d, 660 announcement_support_descriptor = 0x6e, 661 application_signalling_descriptor = 0x6f, 662 adaptation_field_data_descriptor = 0x70, 663 service_identifier_descriptor = 0x71, 664 service_availability_descriptor = 0x72, 665 default_authority_descriptor = 0x73, 666 related_content_descriptor = 0x74, 667 TVA_id_descriptor = 0x75, 668 content_identifier_descriptor = 0x76, 669 time_slice_fec_identifier_descriptor = 0x77, 670 ECM_repetition_rate_descriptor = 0x78, 671 S2_satellite_delivery_system_descriptor = 0x79, 672 enhanced_AC_3_descriptor = 0x7a, 673 DTS_descriptor = 0x7b, 674 AAC_descriptor = 0x7c, 675 XAIT_location_descriptor = 0x7d, 676 FTA_content_management_descriptor = 0x7e, 677 extension_descriptor = 0x7f, 678 679 /* SCTE 35 2004 */ 680 CUE_identifier_descriptor = 0x8a, 681 682 extended_channel_name = 0xa0, 683 service_location = 0xa1, 684 /* From http://www.etherguidesystems.com/Help/SDOs/ATSC/Semantics/Descriptors/Default.aspx */ 685 component_name_descriptor = 0xa3, 686 687 /* From http://www.coolstf.com/tsreader/descriptors.html */ 688 logical_channel_number_descriptor = 0x83, 689 690 /* ISDB Descriptors, as defined on ABNT NBR 15603-1 2007 */ 691 692 carousel_id_descriptor = 0x13, 693 association_tag_descriptor = 0x14, 694 deferred_association_tags_descriptor = 0x15, 695 696 hierarchical_transmission_descriptor = 0xc0, 697 digital_copy_control_descriptor = 0xc1, 698 network_identifier_descriptor = 0xc2, 699 partial_transport_stream_time_descriptor = 0xc3, 700 audio_component_descriptor = 0xc4, 701 hyperlink_descriptor = 0xc5, 702 target_area_descriptor = 0xc6, 703 data_contents_descriptor = 0xc7, 704 video_decode_control_descriptor = 0xc8, 705 download_content_descriptor = 0xc9, 706 CA_EMM_TS_descriptor = 0xca, 707 CA_contract_information_descriptor = 0xcb, 708 CA_service_descriptor = 0xcc, 709 TS_Information_descriptior = 0xcd, 710 extended_broadcaster_descriptor = 0xce, 711 logo_transmission_descriptor = 0xcf, 712 basic_local_event_descriptor = 0xd0, 713 reference_descriptor = 0xd1, 714 node_relation_descriptor = 0xd2, 715 short_node_information_descriptor = 0xd3, 716 STC_reference_descriptor = 0xd4, 717 series_descriptor = 0xd5, 718 event_group_descriptor = 0xd6, 719 SI_parameter_descriptor = 0xd7, 720 broadcaster_Name_Descriptor = 0xd8, 721 component_group_descriptor = 0xd9, 722 SI_prime_TS_descriptor = 0xda, 723 board_information_descriptor = 0xdb, 724 LDT_linkage_descriptor = 0xdc, 725 connected_transmission_descriptor = 0xdd, 726 content_availability_descriptor = 0xde, 727 service_group_descriptor = 0xe0, 728 carousel_compatible_composite_descriptor = 0xf7, 729 conditional_playback_descriptor = 0xf8, 730 ISDBT_delivery_system_descriptor = 0xfa, 731 partial_reception_descriptor = 0xfb, 732 emergency_information_descriptor = 0xfc, 733 data_component_descriptor = 0xfd, 734 system_management_descriptor = 0xfe, 735 736 /* ATSC descriptors - ATSC A/65:2009 spec */ 737 atsc_stuffing_descriptor = 0x80, 738 atsc_ac3_audio_descriptor = 0x81, 739 atsc_caption_service_descriptor = 0x86, 740 atsc_content_advisory_descriptor = 0x87, 741 atsc_extended_channel_descriptor = 0xa0, 742 atsc_service_location_descriptor = 0xa1, 743 atsc_time_shifted_service_descriptor = 0xa2, 744 atsc_component_name_descriptor = 0xa3, 745 atsc_DCC_departing_request_descriptor = 0xa8, 746 atsc_DCC_arriving_request_descriptor = 0xa9, 747 atsc_redistribution_control_descriptor = 0xaa, 748 atsc_ATSC_private_information_descriptor = 0xad, 749 atsc_genre_descriptor = 0xab 750 } 751 752 /* Please see desc_extension.h for extension_descriptor types */